import helma.xmlrpc.WebServer;

public class Servidor {

    private static Leilao [] listaLeilao;
    private int numLeilao=0;
    
    public static void main(String[] args) {//public Servidor() {
        try {
            listaLeilao=new Leilao[20];
            // Invoke me as <http://localhost:8080/RPC2>.
            WebServer server = new WebServer(8080);
            server.addHandler("leilao", new Servidor());
        } catch (Exception exception) {
            System.err.println("JavaServer: " + exception.toString());
        }
    }
    public String criaLeilao(String IDProduto, String nomeProduto,int precoProduto, int tempo) {
        if(numLeilao<20){
            listaLeilao[numLeilao] = new Leilao(nomeProduto, precoProduto, tempo, IDProduto);
            numLeilao++;
        }
        return "leilão criado";
    }
    
    
    public String leiloesAbertos(){
        int count=0;
        if(numLeilao>0){
            StringBuilder stb=new StringBuilder();
            for(int i=0;i<numLeilao;i++){
                if(!listaLeilao[i].getTerminouLeilao()){
                    stb.append(listaLeilao[i].getNome());
                    stb.append(" ");
                    stb.append(listaLeilao[i].getNomeProduto());
                    stb.append(" ");
                    stb.append(listaLeilao[i].getPrecoProduto());
                    stb.append("/");
                    stb.append(listaLeilao[i].getPrecoProdutoInicial());
                    stb.append(" ");
                    stb.append(listaLeilao[i].getTempo());
                    stb.append(" ");
                    stb.append(listaLeilao[i].getParticipanteMaiorLance());
                    stb.append("\n");
                }
            }
            count++;
            if(count>60){
                for(int i=0;i<numLeilao;i++){
                    if(listaLeilao[i].getTempo()>0){
                        listaLeilao[i].diminuiTempo();
                    }
                }
                count=0;
            }  
        
            return stb.toString();
        }
        else{
            return "NADA";
        }
    }
    
    public void darLance(String IDProduto,int lance,String nomeQuemDaLance){
        for(int i=0;i<numLeilao;i++){
            if(listaLeilao[i].getNome().equals(IDProduto)){
                listaLeilao[i].novoLance(lance, nomeQuemDaLance);
            }
        }
    }
    
    public void terminarLeilao(String IDProduto){
        for(int i=0;i<numLeilao;i++){
            if(listaLeilao[i].getNome().equals(IDProduto)){
                listaLeilao[i].setTerminouLeilao();
            }
        }
    }

}
